Correcting a failure associated with a current firmware image

ABSTRACT

Methods, apparatuses, and computer program products for correcting a failure associated with a current firmware image are provided. Embodiments include a firmware selection module detecting the failure associated with the current firmware image stored in firmware memory corresponding to a component of a system. Embodiments also include the firmware selection module selecting from a plurality of backup firmware images, a replacement firmware image based on a status of at least one backup firmware image in response to detecting the failure. Embodiments also include the firmware selection module storing the selected replacement firmware image in the firmware memory.

CROSS-REFERENCE TO RELATED APPLICATION

This application is a continuation application of and claims priorityfrom U.S. patent application Ser. No. 13/719,805, filed on Dec. 19,2012.

BACKGROUND OF THE INVENTION

1. Field of the Invention

The field of the invention is data processing, or, more specifically,methods, apparatuses, and computer program products for correcting afailure associated with a current firmware image.

2. Description Of Related Art

The development of the EDVAC computer system of 1948 is often cited asthe beginning of the computer era. Since that time, computer systemshave evolved into extremely complicated devices. Today's computers aremuch more sophisticated than early systems such as the EDVAC. Computersystems typically include a combination of hardware and softwarecomponents, application programs, operating systems, processors, buses,memory, input/output devices, and so on. As advances in semiconductorprocessing and computer architecture push the performance of thecomputer higher and higher, more sophisticated computer software hasevolved to take advantage of the higher performance of the hardware,resulting in computer systems today that are much more powerful thanjust a few years ago.

In some servers, the service processor can perform the update of Pre-OSfirmware components such as a Unified Extensible Firmware Interface(‘UEFI’). The service processor has the ability to update or restore thepre-OS firmware in the event of a failure or firmware corruption. If afirmware corruption occurs after it has been running for a while, it isdesirable to correct and restore the corrupted firmware to same state itwas in prior to the corruption. However, it is also possible that aPre-OS firmware failure occurs not because of corruption, but because ofa defect in the firmware. The defect may be triggered by an unforeseenconfiguration or circumstance that is not properly handled by thefirmware. In that situation, it is desirable to replace faulty firmwarewith a prior version of the Pre-OS firmware that did not contain theoperational defect.

Firmware recovery mechanisms frequently provide for primary and backupimages. When a firmware problem occurs, the backup version is used. Ifthe backup contains a different version of the firmware than the primaryimage, this can cause problems when there are dependencies foroperational features or behaviors that are not present or different inthe backup version. Likewise if the backup image contains the sameversion of the firmware as the primary image, both images can containthe same operational defect. For example, if the firmware hangs when acertain adapter card get installed in the system, both primary andbackup images will experience the same problem.

SUMMARY OF THE INVENTION

Methods, apparatuses, and computer program products for correcting afailure associated with a current firmware image are provided.Embodiments include a firmware selection module detecting the failureassociated with the current firmware image stored in firmware memorycorresponding to a component of a system. Embodiments also include thefirmware selection module selecting from a plurality of backup firmwareimages, a replacement firmware image based on a status of at least onebackup firmware image in response to detecting the failure. Embodimentsalso include the firmware selection module storing the selectedreplacement firmware image in the firmware memory.

The foregoing and other objects, features and advantages of theinvention will be apparent from the following more particulardescriptions of exemplary embodiments of the invention as illustrated inthe accompanying drawings wherein like reference numbers generallyrepresent like parts of exemplary embodiments of the invention.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 sets forth a network diagram of a system for correcting a failureassociated with a current firmware image according to embodiments of thepresent invention.

FIG. 2 sets forth a flow chart illustrating an exemplary method forcorrecting a failure associated with a current firmware image accordingto embodiments of the present invention.

FIG. 3 sets forth a flow chart illustrating an exemplary method forcorrecting a failure associated with a current firmware image accordingto embodiments of the present invention.

FIG. 4 sets forth a flow chart illustrating an exemplary method forcorrecting a failure associated with a current firmware image accordingto embodiments of the present invention.

DETAILED DESCRIPTION OF EXEMPLARY EMBODIMENTS

Exemplary methods, apparatuses, and computer program products forcorrecting a failure associated with a current firmware image inaccordance with the present invention are described with reference tothe accompanying drawings, beginning with FIG. 1. FIG. 1 sets forth anetwork diagram of a system for correcting a failure associated with acurrent firmware image according to embodiments of the presentinvention. The system of FIG. 1 includes a computing system—computer(152). The computer (152) of FIG. 1 includes at least one computerprocessor (156) or ‘CPU’ coupled to random access memory (168) (‘RAM’).The processor is coupled to other components of the computer (152)through a bus controller (158). The computer (152) also includesNon-volatile memory in the form of Flash memory (134), which is coupledto memory bus (166).

Stored in RAM (168) is an operating system (154). Operating systemsuseful correcting a failure associated with a current firmware imageaccording to embodiments of the present invention include UNIX™, Linux™,Microsoft XP™, AIX™, IBM's i5/OS™, and others as will occur to those ofskill in the art. The operating system (154) in the example of FIG. 1 iSshown in RAM (168), but many components of such software typically arestored in non-volatile memory also, such as, for example, on a diskdrive (170).

Stored within Flash memory (134) is a firmware memory (128) and a backupfirmware storage (190) containing a first backup location (193) and asecond backup location (194). The first backup location (193) includes afirst backup firmware image (191) and the second backup location (194)includes a second backup firmware image (192). Although shown herestored in Flash memory (134), firmware capable of being managed andcorrected in accordance with embodiments so the present invention may bestored in various memories within a computing system—within non-volatileor volatile memory and within any component of the computer (152), suchas the communications adapter (167), disk drive adapter (172) or I/Oadapter (178).

The computer (152) also includes a service component (189) that includesa service processor (196) and service processor RAM (187) for storinginstructions for execution by the service processor (196). Stored inservice processor RAM (187) is a firmware selection module (199), amodule of computer program instructions that corrects a failureassociated with a current firmware image (130) in accordance withembodiments of the present invention. For example, the service processor(196) may execute the computer program instructions to correct a failureassociated with the current firmware image (130). The firmware selectionmodule (199) may include computer program instructions for detecting thefailure associated with the current firmware image (130) stored infirmware memory (128) corresponding to a component of a system. Acomponent of a system may be a pre-operating system (Pre-OS) firmwarecomponent, such as a Unified Extensible Firmware Interface (‘UEFI’). Thefirmware selection module (199) may be configured to select from aplurality of backup firmware images, a replacement firmware image basedon a status of at least one backup firmware image in response todetecting the failure. The firmware selection module (199) may also beconfigured to store the selected replacement firmware image in thefirmware memory (128).

The computer (152) of FIG. 1 includes disk drive adapter (172) coupledthrough expansion bus (160) and bus controller (158) to processor (156)and other components of the computer (152). Disk drive adapter (172)connects non-volatile data storage to the computer (152) in the form ofdisk drive (170). Disk drive adapters useful in computers for correctinga failure associated with a current firmware image according toembodiments of the present invention include Integrated DriveElectronics (‘IDE’) adapters, Small Computer System Interface (SCSI')adapters, and others as will occur to those of skill in the art.Non-volatile computer memory also may be implemented for as an opticaldisk drive, electrically erasable programmable read-only memory(so-called ‘EEPROM’ or ‘Flash’ memory), RAM drives, and so on, as willoccur to those of skill in the art.

The example computer (152) of FIG. 1 includes one or more input/output(‘I/O’) adapters (178). I/O adapters implement user-orientedinput/output through, for example, software drivers and computerhardware for controlling output to display devices such as computerdisplay screens, as well as user input from user input devices (181)such as keyboards and mice. The example computer (152) of FIG. 1includes a video adapter (183), which is an example of an I/O adapterspecially designed for graphic output to a display device (180) such asa display screen or computer monitor. Video adapter (183) is connectedto processor (156) through a high speed video bus (164), bus controller(158), and the front side bus (162), which is also a high speed bus.

The exemplary computer (152) of FIG. 1 includes a communications adapter(167) for data communications with other computers (182) and for datacommunications with a data communications network (100). Such datacommunications may be carried out serially through RS-232 connections,through external buses such as a Universal Serial Bus (‘USB’), throughdata communications networks such as IP data communications networks,and in other ways as will occur to those of skill in the art.Communications adapters implement the hardware level of datacommunications through which one computer sends data communications toanother computer, directly or through a data communications network.Examples of communications adapters useful for correcting a failureassociated with a current firmware image according to embodiments of thepresent invention include modems for wired dial-up communications,Ethernet (IEEE 802.3) adapters for wired data communications networkcommunications, and 802.11 adapters for wireless data communicationsnetwork communications.

The arrangement of computers, networks, and other devices making up theexemplary system illustrated in FIG. 1 are for explanation, not forlimitation. Data processing systems useful according to variousembodiments of the present invention may include additional servers,routers, other devices, and peer-to-peer architectures, not shown inFIG. 1, as will occur to those of skill in the art. Networks in suchdata processing systems may support many data communications protocols,including for example TCP (Transmission Control Protocol), IP (InternetProtocol), HTTP (HyperText Transfer Protocol), WAP (Wireless AccessProtocol), HDTP (Handheld Device Transport Protocol), and others as willoccur to those of skill in the art. Various embodiments of the presentinvention may be implemented on a variety of hardware platforms inaddition to those illustrated in FIG. 1.

For further explanation, FIG. 2 sets forth a flow chart illustrating anexemplary method for correcting a failure associated with a currentfirmware image according to embodiments of the present invention. Themethod of FIG. 2 includes the firmware selection module (199) detecting(202) the failure (248) associated with the current firmware image (130)stored in firmware memory (128) corresponding to a component of asystem. An example of a component is a Unified Extensible FirmwareInterface (‘UEFI’). Detecting (202) the failure (248) associated withthe current firmware image (130) stored in firmware memory (128)corresponding to a component of a system may be carried out by readingcontents of the firmware memory (128) to retrieve the computer programinstructions in the current firmware image (130); executing theinstructions in the current firmware image (130); detecting a hang inthe execution of the instructions; detecting a problem due to corruptedor unreadable instructions in the current firmware image (130); anddetermining that the system is unable to interact with the firmwarecomponent.

The method of FIG. 2 includes the firmware selection module (199)selecting (204) from a plurality of backup firmware images (191, 192), areplacement firmware image (250) based on a status (252) of at least onebackup firmware image (191, 192) in response to detecting the failure(248). A backup firmware image is a firmware image that was previouslyused or is a copy of a firmware image that is currently being used(i.e., a copy of the current firmware image (130)). That is, thefirmware selection module (199) keeps copies of the firmware images thatit has previously used to update the firmware memory (128). Selecting(204) from a plurality of backup firmware images (191, 192), areplacement firmware image (250) based on a status (252) of at least onebackup firmware image (191, 192) may be carried out by determiningwhether to correct a corrupted current firmware image (by replacing thecurrent firmware image with an non-corrupted copy of the currentfirmware image) or replace the current firmware image with a differentpreviously used firmware image.

A status of a firmware image indicates a reliability determinationassociated with the firmware image. For example, a backup firmware imagemay have a status of good, new, bad, or others as will occur to those ofskill in the art. A ‘good’ status may be assigned by a service processorto a backup firmware image after the Pre-OS firmware has been run andpasses certain criteria. A ‘new’ status may be assigned to a backupfirmware image that was recently used to update the firmware memory.Backup firmware images with the ‘new’ status may not have been run orexercised sufficiently enough to determine whether or not the newfirmware image contains a defect. A ‘bad’ status is assigned by aservice processor if the service processor detects a problem with thepre-OS firmware and determines that the firmware memory is not corrupted(e.g., the current firmware image is not corrupted).

That is, according to embodiments of the present invention, the backupfirmware storage (190) may include a copy of the current firmware imageand a different previously used firmware image. Depending on the statusof these images, the firmware selection module (199) may replace thecurrent firmware image (130) with either the copy of the currentfirmware image or the different previously used firmware image. That is,the firmware selection module (199) may automatically choose theappropriate action when handling firmware failures.

The method of FIG. 2 includes the firmware selection module (199)storing (206) the selected replacement firmware image (250) in thefirmware memory (128).

Storing (206) the selected replacement firmware image (250) in thefirmware memory (128) may be carried out by replacing the currentfirmware image with one of the backup firmware images.

For further explanation, FIG. 3 sets forth a flow chart illustrating anexemplary method for correcting a failure associated with a currentfirmware image according to embodiments of the present invention. Themethod of FIG. 3 is similar to the method of FIG. 2 in that the methodof FIG. 3 also includes detecting (202) the failure (248) associatedwith the current firmware image (130) stored in firmware memory (128)corresponding to a component of a system; selecting (204) from aplurality of backup firmware images (191, 192), a replacement firmwareimage (250) based on a status (252) of at least one backup firmwareimage (191, 192) in response to detecting the failure (248); and storing(206) the selected replacement firmware image (250) in the firmwarememory (128).

In the method of FIG. 3, however, selecting (204) from a plurality ofbackup firmware images (191, 192), a replacement firmware image (250)based on a status (252) of at least one backup firmware image (191, 192)includes selecting (302) from the plurality of backup firmware images(191, 192), a last-stored backup firmware image (350). Selecting (302)from the plurality of backup firmware images (191, 192), a last-storedbackup firmware image (350) may be carried out by reading a status of alast update flag indicating a location in the backup firmware storage(190) that contains the most recently stored backup image (i.e., a copyof the current firmware image). For example, the last update flag mayindicate the first backup location (193) contains a firmware image thatwas last used as the ‘current firmware image.’

In the method of FIG. 3, selecting (204) from a plurality of backupfirmware images (191, 192), a replacement firmware image (250) based ona status (252) of at least one backup firmware image (191, 192) includesdetermining (304) whether a status (352) of the last-stored backupfirmware image (350) is bad. A ‘bad’ status is assigned by a serviceprocessor if the service processor detects a problem with the pre-OSfirmware and determines that the firmware memory is not corrupted (e.g.,the current firmware image is not corrupted). Determining (304) whethera status (352) of the last-stored backup firmware image (350) is bad maybe carried out by examining a memory location dedicated to indicating astatus of a particular backup firmware image.

If the status (352) of the last-stored backup firmware image (350) isbad, the method of FIG. 3 continues by selecting (306) another backupfirmware image (191, 192) as the replacement firmware image (350).Selecting (306) another backup firmware image (191, 192) as thereplacement firmware image (350) may be carried out by determining whichbackup firmware image was not the most recently saved; and examining alast update flag. For example, if the first backup firmware image (191)is the last-stored backup firmware image and the status is ‘bad,’ thefirmware selection module (199) may select the second backup firmwareimage (192) as the replacement image. In this example, the firmwareselection module (199) has determined that the firmware memory (128) wasnot corrupted and that the detected failure is due to a problem with anon-corrupt firmware image. In this example, a different firmware imageis need to fix the problem and the firmware selection module (199)selects a previously used backup firmware image stored in the backupfirmware storage (190).

If the status (352) of the last-stored backup firmware image (350) isnot bad, the method of FIG. 3 continues by determining (308) whether thecurrent firmware image (130) substantially matches the last-storedbackup firmware image (350). That is, the last-stored backup firmwareimage should be the same as the current firmware image. If these twoimages do not match, then the current firmware image in the firmwarememory (128) is corrupted and should be replaced by the copy in thebackup firmware storage (190). Determining (308) whether the currentfirmware image (130) substantially matches the last-stored backupfirmware image (350) may be carried out by comparing the currentfirmware image to the last-stored backup firmware image.

If the current firmware image (130) does not substantially match thelast-stored backup firmware image (350), the method of FIG. 3 continuesby selecting (310) the last-stored backup firmware image (350) as thereplacement firmware image (250). Selecting (310) the last-stored backupfirmware image (350) as the replacement firmware image (250) may becarried out by identifying the location in the backup firmware storage(190) based on the last update flag.

If the current firmware image (130) does substantially match thelast-stored backup firmware image (350), the method of FIG. 3 continuesby selecting (312) another backup firmware image (191, 192) as thereplacement firmware image (250). Selecting (312) another backupfirmware image (191, 192) as the replacement firmware image (250) may becarried out by select the backup firmware image not identified by a lastupdate flag. That is, if the two images match, then the current firmwareimage is not corrupted—it just produces failures in the component (i.e.,its status is ‘bad’).

If the current firmware image (130) does substantially match thelast-stored backup firmware image (350), the method of FIG. 3 continuesby setting (314) the status (352) of the last-stored backup firmwareimage (350) to bad. Setting (314) the status (352) of the last-storedbackup firmware image (350) to bad may be carried out by changing a bitin a memory location dedicated to indicating the status of the backupfirmware image.

For further explanation, FIG. 4 sets forth a flow chart illustrating anexemplary method for correcting a failure associated with a currentfirmware image according to embodiments of the present invention. Themethod of FIG. 4 includes the firmware selection module (199)identifying (402) a new firmware image (450). Identifying (402) a newfirmware image (450) may be carried out by receiving a new firmwareimage from another component of the system.

The method of FIG. 4 also includes the firmware selection module (199)determining (404) whether a status (352) of the last-stored backupfirmware image (350) is good. In a particular embodiment, thelast-stored backup firmware image (350) is stored in a first backuplocation (193). Determining (404) whether a status (452) of thelast-stored backup firmware image (350) is good may be carried out byexamining a memory location dedicated to indicating a status of theparticular backup firmware image.

If the status (352) of the last-stored backup firmware image (350) isnot good, the method of FIG. 4 continues by the firmware selectionmodule (199) storing (406) the new firmware image (450) in the firstbackup location (193). Storing (406) the new firmware image (450) in thefirst backup location (193) may be carried out by overwriting thepreviously stored backup firmware image with the new firmware image; andchanging a last update flag. That is, the new firmware image becomes thelast-stored backup firmware image.

If the status (352) of the last-stored backup firmware image (350) isgood, the method of FIG. 4 continues by the firmware selection module(199) storing (408) the new firmware image (450) in a second backuplocation (194). Storing (408) the new firmware image (450) in a secondbackup location (194) may be carried out by overwriting the second tolast stored backup firmware image with the new firmware image; andchanging a last update flag. That is, the new firmware image becomes thelast-stored backup firmware image.

The method of FIG. 4 also includes setting (410) a status (452) of thenew firmware image (450) to new. Setting (410) a status (452) of the newfirmware image (450) to new may be carried out by changing a bit in amemory location dedicated to indicating the status of the backupfirmware image.

As will be appreciated by one skilled in the art, aspects of the presentinvention may be embodied as a system, method or computer programproduct. Accordingly, aspects of the present invention may take the formof an entirely hardware embodiment, an entirely software embodiment(including firmware, resident software, micro-code, etc.) or anembodiment combining software and hardware aspects that may allgenerally be referred to herein as a “circuit,” “module” or “system.”Furthermore, aspects of the present invention may take the form of acomputer program product embodied in one or more computer readablemedium(s) having computer readable program code embodied thereon.

Any combination of one or more computer readable medium(s) may beutilized. The computer readable medium may be a computer readable signalmedium or a computer readable storage medium. A computer readablestorage medium may be, for example, but not limited to, an electronic,magnetic, optical, electromagnetic, infrared, or semiconductor system,apparatus, or device, or any suitable combination of the foregoing. Morespecific examples (a non-exhaustive list) of the computer readablestorage medium would include the following: an electrical connectionhaving one or more wires, a portable computer diskette, a hard disk, arandom access memory (RAM), a read-only memory (ROM), an erasableprogrammable read-only memory (EPROM or Flash memory), an optical fiber,a portable compact disc read-only memory (CD-ROM), an optical storagedevice, a magnetic storage device, or any suitable combination of theforegoing. In the context of this document, a computer readable storagemedium may be any tangible medium that can contain, or store a programfor use by or in connection with an instruction execution system,apparatus, or device.

A computer readable signal medium may include a propagated data signalwith computer readable program code embodied therein, for example, inbaseband or as part of a carrier wave. Such a propagated signal may takeany of a variety of forms, including, but not limited to,electro-magnetic, optical, or any suitable combination thereof. Acomputer readable signal medium may be any computer readable medium thatis not a computer readable storage medium and that can communicate,propagate, or transport a program for use by or in connection with aninstruction execution system, apparatus, or device.

Program code embodied on a computer readable medium may be transmittedusing any appropriate medium, including but not limited to wireless,wireline, optical fiber cable, RF, etc., or any suitable combination ofthe foregoing.

Computer program code for carrying out operations for aspects of thepresent invention may be written in any combination of one or moreprogramming languages, including an object oriented programming languagesuch as Java, Smalltalk, C++ or the like and conventional proceduralprogramming languages, such as the “C” programming language or similarprogramming languages. The program code may execute entirely on theuser's computer, partly on the user's computer, as a stand-alonesoftware package, partly on the user's computer and partly on a remotecomputer or entirely on the remote computer or server. In the latterscenario, the remote computer may be connected to the user's computerthrough any type of network, including a local area network (LAN) or awide area network (WAN), or the connection may be made to an externalcomputer (for example, through the Internet using an Internet ServiceProvider).

Aspects of the present invention are described above with reference toflowchart illustrations and/or block diagrams of methods, apparatus(systems) and computer program products according to embodiments of theinvention. It will be understood that each block of the flowchartillustrations and/or block diagrams, and combinations of blocks in theflowchart illustrations and/or block diagrams, can be implemented bycomputer program instructions. These computer program instructions maybe provided to a processor of a general purpose computer, specialpurpose computer, or other programmable data processing apparatus toproduce a machine, such that the instructions, which execute via theprocessor of the computer or other programmable data processingapparatus, create means for implementing the functions/acts specified inthe flowchart and/or block diagram block or blocks.

These computer program instructions may also be stored in a computerreadable medium that can direct a computer, other programmable dataprocessing apparatus, or other devices to function in a particularmanner, such that the instructions stored in the computer readablemedium produce an article of manufacture including instructions whichimplement the function/act specified in the flowchart and/or blockdiagram block or blocks.

The computer program instructions may also be loaded onto a computer,other programmable data processing apparatus, or other devices to causea series of operational steps to be performed on the computer, otherprogrammable apparatus or other devices to produce a computerimplemented process such that the instructions which execute on thecomputer or other programmable apparatus provide processes forimplementing the functions/acts specified in the flowchart and/or blockdiagram block or blocks.

The flowchart and block diagrams in the Figures illustrate thearchitecture, functionality, and operation of possible implementationsof systems, methods and computer program products according to variousembodiments of the present invention. In this regard, each block in theflowchart or block diagrams may represent a module, segment, or portionof code, which comprises one or more executable instructions forimplementing the specified logical function(s). It should also be notedthat, in some alternative implementations, the functions noted in theblock may occur out of the order noted in the figures. For example, twoblocks shown in succession may, in fact, be executed substantiallyconcurrently, or the blocks may sometimes be executed in the reverseorder, depending upon the functionality involved. It will also be notedthat each block of the block diagrams and/or flowchart illustration, andcombinations of blocks in the block diagrams and/or flowchartillustration, can be implemented by special purpose hardware-basedsystems that perform the specified functions or acts, or combinations ofspecial purpose hardware and computer instructions.

It will be understood from the foregoing description that modificationsand changes may be made in various embodiments of the present inventionwithout departing from its true spirit. The descriptions in thisspecification are for purposes of illustration only and are not to beconstrued in a limiting sense. The scope of the present invention islimited only by the language of the following claims.

1. A method of correcting a failure associated with a current firmwareimage, the method comprising: detecting, by a firmware selection module,the failure associated with the current firmware image stored infirmware memory corresponding to a component of a system; in response todetecting the failure, selecting from a plurality of backup firmwareimages, by the firmware selection module, a replacement firmware imagebased on a status of at least one backup firmware image; and storing, bythe firmware selection module, the selected replacement firmware imagein the firmware memory.
 2. The method of claim 1 wherein selecting thereplacement firmware image includes: selecting from the plurality ofbackup firmware images, a last-stored backup firmware image; determiningwhether a status of the last-stored backup firmware image is bad; if thestatus of the last-stored backup firmware image is bad, selectinganother backup firmware image as the replacement firmware image; and ifthe status of the last-stored backup firmware image is not bad,determining whether the current firmware image substantially matches thelast-stored backup firmware image; if the current firmware image doesnot substantially match the last-stored backup firmware image, selectingthe last-stored backup firmware image as the replacement firmware image;and if the current firmware image does substantially match thelast-stored backup firmware image, selecting another backup firmwareimage as the replacement firmware image.
 3. The method of claim 2wherein selecting the replacement firmware image includes: if thecurrent firmware image does substantially match the last-stored backupfirmware image, setting the status of the last-stored backup firmwareimage to bad.
 4. The method of claim 1 further comprising: identifying,by the firmware selection module, a new firmware image; determining, bythe firmware selection module, whether a status of the last-storedbackup firmware image is good, wherein the last-stored backup firmwareimage is stored in a first backup location; if the status of thelast-stored backup firmware image is not good, storing, by the firmwareselection module, the new firmware image in the first backup location;and if the status of the last-stored backup firmware image is good,storing, by the firmware selection module, the new firmware image in asecond backup location.
 5. The method of claim 4 further comprisingsetting a status of the new firmware image to new.
 6. The method ofclaim 1, wherein the component is a Unified Extensible FirmwareInterface (‘UEFI’). 7-20. (canceled)